package com.ceo.common.utils;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 日期工具类
 */
public class DateUtil {

    /**
     * 获取当天的日期字符串的格式常量
     */
    private static final String TODAY_DAY_STR_FORMAT = "yyyyMMdd";

    /**
     * 标准的日期转换格式
     */
    private static final String STD_DAY_STR_FORMAT = "yyyy-MM-dd HH:mm:ss";

    /**
     * 获取当前时间N天后的日期
     *
     * @param days
     * @return
     */
    public static Date afterDays(Integer days) {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, days);
        return calendar.getTime();
    }

    /**
     * 获取特定时间N天后的日期
     *
     * @param date
     * @param days
     * @return
     */
    public static Date afterDays(Date date, Integer days) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, days);
        return calendar.getTime();
    }

    /**
     * 获取当前时间N天前的日期
     *
     * @param days
     * @return
     */
    public static Date beforeDays(Integer days) {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, -days);
        return calendar.getTime();
    }

    /**
     * 获取特定时间N天前的日期
     *
     * @param date
     * @param days
     * @return
     */
    public static Date beforeDays(Date date, Integer days) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, -days);
        return calendar.getTime();
    }

    /**
     * 获取当天的日期字符串，按照yyyyMMdd格式返回
     *
     * @return
     */
    public static String getTodayDayString() {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(TODAY_DAY_STR_FORMAT);
        return simpleDateFormat.format(new Date());
    }

    /**
     * 标准的日期转换成字符串
     *
     * @param date
     * @return
     */
    public static String stdDate2String(Date date) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(STD_DAY_STR_FORMAT);
        return simpleDateFormat.format(date);
    }

}
